using System;
using System.Collections;
using Curriculum.Modelo.Clases;
using Curriculum.DataAccess.Server;
using Curriculum.Db4oHttpModule;
using System.Web;
using Db4objects;

namespace Curriculum.Services
{
	/// <summary>
	/// Summary description for DocenteService.
	/// </summary>
	public class DocenteService : ServiceBase
	{	
		#region Constructors

		public DocenteService()
		{					
		}	

		#endregion

		#region Overrides

		protected override Type GetMyObjectType()
		{
			return typeof(Docente);
		}

		#endregion

		public Docente ObtenerDocente(object docenteId)
		{
			return base.ObtenerObjetoPorId(typeof(Docente), docenteId.ToString()) as Docente;
		}

		/// <summary>
		/// Crea un Docente.
		/// </summary>
		/// <param name="docente"></param>
		/// <returns>retorna el id con el que se dio de alta el docente</returns>
		public object CrearDocente(Docente docente)
		{
			return base.Crear(docente);
		}
		/// <summary>
		/// Modifica un Docente
		/// </summary>
		/// <param name="docente"></param>
		/// <returns>retorna el id del docente</returns>
		public object ModificarDocente(Docente docente)
		{
			return base.Modificar(docente);
		}
		/// <summary>
		/// Elimina un Docente
		/// </summary>
		/// <param name="docenteId">id del docente que se quiere eliminar</param>
		/// <returns></returns>
		public void EliminarDocente(object docenteId)
		{
			base.Eliminar(typeof(Docente), docenteId);
		}

		public IList ObtenerConcursosAbiertosNoInscripto(string docenteId)
		{
			IList concursosAbiertos = dataManager.GetConcursosAbiertos();
			IList inscripcionesAbiertas = dataManager.GetInscripcionesAbiertas(docenteId);
			IList concursosAbiertosNoInscripto = new ArrayList(concursosAbiertos);

			foreach (Inscripcion inscripcion in inscripcionesAbiertas)
			{
				if (concursosAbiertos.Contains(inscripcion.Concurso))
				{
					concursosAbiertosNoInscripto.Remove(inscripcion.Concurso);
				}
			}

			return concursosAbiertosNoInscripto;
		}

		public IList ObtenerDocentes(string nombre, string apellido, string cuil)
		{
			return dataManager.GetDocenteLike(nombre, apellido, cuil);
		}
		public IList ObtenerDocentesConCV()
		{
			IList CVs = dataManager.GetCVs();
			IList listaDocentes = new ArrayList();

			foreach (VersionCurriculo versionCV in CVs)
			{
				listaDocentes.Add(versionCV.Docente);
			}

			return listaDocentes;
		}
	}
}
